package fr.alma.domo.svc;

import fr.alma.domo.model.AbstractService;
import fr.alma.domo.model.CollaborationSchema;

public interface CollaborationHandler {

	/**
	 * Créer un schema de collaboration
	 * 
	 * @param schema <p>La description du schema de collaboration</p>
	 * @return L' identifiant unique du schema de collaboration qui sera utilisé pour l' instancier
	 */
	public abstract String createSchema(Class<? extends CollaborationSchema> schema);
	
	/**
	 * Creer l'instance d'une collaboration
	 * @param schemaId Identifient du schema precedemment déclaré par {@code fr.alma.domo.model.CollaboraHandler.createSchema(CollaborationSchema)}
	 * @param services Les services utilisés dans le schéma e collaboration
	 * @return L' identifiant unique de l'instance
	 */
	public abstract String createInstance(String schemaId,AbstractService ... services);
	
	/**
	 * 
	 * @param instanceId
	 */
	public abstract void deleteInstance(String instanceId);
}
